1. Field of the Invention
The present invention relates to systems and methods for encoding data, and in particular to a system and method for generating and processing slice headers with high efficiency video coded data.
2. Description of the Related Art
There is rapid growth in the technologies associated with the generation, transmission, and reproduction of media programs. These technologies include coding schemes that permit digital versions of the media programs to be encoded to compress them to much smaller size and facilitate their transmission, storage, reception and playback. These technologies have application in personal video recorders (PVRs), video on demand (VOD), multiple channel media program offerings, interactivity, mobile telephony, and media program transmission.
Without compression, digital media programs are typically too large to transmit and/or store for a commercially acceptable cost. However, compression of such programs has made the transmission and storage of such digital media programs not only commercially feasible, but commonplace.
Initially, the transmission of media programs involved low to medium resolution images transmitted over high bandwidth transmission media such as cable television and satellite. However, such transmission has evolved to include lower bandwidth transmission media such as Internet transmission to fixed and mobile devices via computer networks, WiFi, Mobile TV and third and fourth generation (3G and 4G) networks. Further, such transmissions have also evolved to include high definition media programs such as high definition television (HDTV), which have significant transmission bandwidth and storage requirements.
The High Efficiency Video Coding (HEVC) coding standard (or H.265) is the most recent coding standard promulgated by the ISO/IEC MPEG standardization organizations. The coding standard preceding HEVC included the H.262/MPEG-2 and the subsequent H.264/MPEG-4 Advanced Video Coding (AVC) standard. H.264/MPEG-4 has substantially replaced H.262/MPEG-2 in many application including high definition (HD) television. HEVC supports resolutions higher than HD, even in stereo or multi-view embodiments, and is more suitable for mobile devices such as tablet personal computers. Further information regarding HEVC can be found in the publication “Overview of the High Efficiency Video Coding (HEVC) Standard, by Gary J. Sullivan, Jens-Rainer Ohm, Woo Jin Han and Thomas Wiegand, IEEE Transactions on Circuits and Systems for Video Technology, December 2012, and “High Efficiency Video Coding (HEVC) Text Specification Draft 10,” by the Joint Collaborative Team on Video Coding (JCT-VC) including Benjamin Bross, Woo-Jin Han, Jens-Rainer Ohm, Gary J. Sullivan, Ye-Kui Wang and Thomas Wiegand, presented at the 12th Meeting, Geneva, Jan. 14-23, 2013 (hereinafter, “HEVC Specification,” both of which are hereby incorporated by reference herein.
As in other coding standards, the bitstream structure and syntax of HEVC compliant data are standardized, such that every decoder conforming to the standard will produce the same output when provided with the same input. Some of the features incorporated into the HEVC standard include the definition and processing of coding tree structures used to identify the splitting of units and blocks of data into smaller units and blocks of data. Coding trees are defined according to a quadtree structure. A quadtree is a tree in which a parent node (associated with a coding unit or block) can be split into four child nodes, each of which may become a parent node for another split into four child nodes. Transform trees are tree structures relating to transform units, which comprise residual signals of a CU.
The transform tree structure is signaled in the transform tree syntax described in paragraph 7.3.8.8. of the HEVC Specification. This baseline transform tree structure uses the hierarchical depth of the subject transform unit as an index to a flag describing whether hierarchically adjacent chroma blocks have non-zero coefficients. However the baseline transform tree syntax uses the variable associated with such depth (trafoDepth) as an index to the flag, and this can result in an impermissible and confusing negative index. What is needed is a transform tree syntax that avoids this discrepancy.